package main

func main() {
	// 字符定义
	//var a = 'a'
	//fmt.Printf("值:%v, 原始值:%c, 类型为:%T\n", a, a, a)
	//// 定义字符串,输入字符串中的第3个字符
	//var str = "abcd"
	//fmt.Printf("值:%v, 原始值:%c, 类型为:%T\n", str[2], str[2], str[2])

	// 一个汉字占用三个字节, utf-8的编码, 一个字母占用一个字节.
	// unsafe.Sizeof无法查看字符串类型所占的存储空间
	//var str = "你abcd"
	//fmt.Println(unsafe.Sizeof(str))
	////XXX len返回的是占用的字节数
	//fmt.Println(len(str))
	//// golang中汉字使用utf-8编码, 编码后的值就是int类型
	//var a = '国'
	//// 值:22269, 原始值:国, 类型为:int32
	//fmt.Printf("utf8编码值:%v, 原始值:%c, 类型为:%T\n", a, a, a)

	// 通过循环输出字符串中的字符
	//str := "你好, golang"
	//for idx, item := range str {
	//	fmt.Printf("idx:%d, 值:%v, 原始值:%c, 类型为:%T\n", idx, item, item, item)
	//}

	// 修改字符串
	// byte类型
	//s1 := "big"
	//s1Arr := []byte(s1)
	//s1Arr[0] = 'p'
	//fmt.Println(string(s1Arr))

	// rune类型, 能处理汉字
	//s1 := "你好"
	//s1Arr := []rune(s1)
	//s1Arr[0] = '您'
	//fmt.Println(string(s1Arr))

	// 类型转换, 地位转高位, 避免精度丢失.

	// 其他类型转str类型
	//var i = 20
	//str1 := fmt.Sprintf("%d", i)
	//str2 := strconv.FormatInt(int64(i), 10)
	//fmt.Println(str1, str2)

	// str 转 int
	//str := "123"
	//i, err := strconv.ParseInt(str, 10, 64)
	//fmt.Println(i, err)

	// 其他类型无法转换为bool类型
}
